
package Type_1_arr.title2_P27;

import java.util.Arrays;

//p27移除元素 暴露删除
public class P27RemoveElement1 {


    //TODO {0, 1, 2, 2, 3, 0, 4, 2, 8}
    public static int removeElement(int[] nums, int val) {
        System.out.println("开始的元素:" + Arrays.toString(nums));

        int size = nums.length;

        for (int i = 0; i < size; i++) {
            if (nums[i] == val) {  //匹配上
                for (int j = i + 1; j < size; j++) {
                    //TODO 重点：是数组元素前移操作(删除)
                    // 个人理解：删了多少个，最后会填充 原来数组的最后一个元素多少个（覆盖式删除）
                    nums[j - 1] = nums[j];
                }
                i -= 1;  //TODO 会跳过紧接着的元素（导致漏删）
                size -= 1;
            }
        }
        System.out.println("结束的元素:" + Arrays.toString(nums));
        return size;
    }

    public static void main(String[] args) {


        int[] nums = {0, 1, 2, 2, 3, 0, 4, 2, 8};
        int num = removeElement(nums, 2);

        System.out.println("剩余的数量" + num);
    }
}